package com.kfm.base.string;

public class StringBuilderDemo {

    public static void main(String[] args) {

        /*
            StringBuffer 和 StringBuilder 都是继承自抽象类 AbstractStringBuilder
            StringBuffer 从 jdk1.0 开始就提供了，而StringBuilder 是jdk1.5才提供的
            两个类大部分实现都一样, 不同点在于 StringBuffer 中大部分方法都有 synchronized 修饰
            synchronized 表示同步，修饰的方法表示同步方法。是多线程中一种线程安全的实现方法。

            StringBuffer 是线程安全的类，StringBuilder是非线程安全的
            String 不可变，是线程安全
            执行效率 StringBuilder 相对较高.
         */
        // 16个长度的字符构建器
        StringBuilder sb = new StringBuilder();
        // 创建指定长度的 StringBuilder 对象
        sb = new StringBuilder(3);
        // 创建指定内容的 StringBuilder 对象
//        sb = new StringBuilder("hello");

        System.out.println(sb.capacity());

        // 修改 StringBuilder 内容
        sb.append("a");
        sb.append("b");

        // 链式调用
        sb.append("c").append("d").append("e");

        // 删除某个位置
//        sb.deleteCharAt(0);
        // 删除某个范围
//        sb.delete(0, 2);

        sb.insert(3, "A");

        // 数组长度 arr.length 字符串 str.length()
//        System.out.println(sb.length());



        // StringBuilder --> String
        String str = sb.toString();
        System.out.println(str);
        System.out.println(sb.capacity());

        sb.reverse();
        System.out.println(sb.toString());
    }
}
